﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class VentasInforme : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            ViewState["GrillaOrden"] = "id_factura";
            cargarTipoFactura();

        }
    }

    private void cargarTipoFactura()
    {
        cboTipoFactura.DataSource = DAO.DAOTipoFactura.getTodas();
        cboTipoFactura.DataTextField = "nombre";
        cboTipoFactura.DataValueField = "id_tipo_factura";
        cboTipoFactura.DataBind();
        cboTipoFactura.Items.Insert(0, new ListItem("(Todos)", ""));
    }

    private List<Entidad.VentasQueryInforme> VentasEnSession
    {
        get
        {
            if (Session["VentasEnSession"] != null)
                return (List<Entidad.VentasQueryInforme>)Session["VentasEnSession"];
            else
                return null;
        }
        set
        {
            Session["VentasEnSession"] = value;
        }
    }

    protected void btnBuscar_Click(object sender, EventArgs e)
    {
        buscarGrilla(0);
    }

    private void buscarGrilla(int indicePagina, string ordenarPor = "id_factura")
    {
        DateTime? fechaVentaDesde = null;
        DateTime? fechaVentaHasta = null;
        int? id_tipo_factura = null;
        long? numero_documento = null;

        if (!string.IsNullOrEmpty(txtNroDoc.Text))
        {
             numero_documento = long.Parse(txtNroDoc.Text);
        }
       

        if (cboTipoFactura.SelectedIndex > 0)
        {
            id_tipo_factura = int.Parse(cboTipoFactura.SelectedValue);
        }

        if (!string.IsNullOrEmpty(Request.Form[txtFechaVentaDesde.UniqueID]))
        {
            fechaVentaDesde = DateTime.Parse(Request.Form[txtFechaVentaDesde.UniqueID]);
        }
        if (!string.IsNullOrEmpty(Request.Form[txtFechaVentaHasta.UniqueID]))
        {
            fechaVentaHasta = DateTime.Parse(Request.Form[txtFechaVentaHasta.UniqueID]);
        }
        List<Entidad.VentasQueryInforme> ventas = DAO.DAOFactura.buscarFiltro(fechaVentaDesde, fechaVentaHasta, numero_documento, id_tipo_factura, ordenarPor);
        VentasEnSession = ventas;
        gvVentas.DataSource = ventas;
        gvVentas.DataKeyNames = new string[] { "id_factura" };
        gvVentas.PageIndex = indicePagina;
        gvVentas.DataBind();
    }
    
    protected void gvVentas_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        //Si realizo la consulta en SQL es el siguiente codigo
        //        BuscarEnGrilla(e.NewPageIndex, ViewState["GrillaOrden"].ToString());   

        //Solo si trabajo con la lista en Session va el siguiente codigo
        gvVentas.DataSource = VentasEnSession;
        gvVentas.DataKeyNames = new string[] { "id_factura" };
        gvVentas.PageIndex = e.NewPageIndex;
        gvVentas.DataBind();
    }
    protected void gvVentas_Sorting(object sender, GridViewSortEventArgs e)
    {
        ViewState["GrillaOrden"] = e.SortExpression;
        buscarGrilla(0, e.SortExpression);
    }
}